NOSQL
Nosql全稱是Not Only SQL,是一種不同于關系型數據庫的數據庫管理系統設計方式。對NoSQL最普遍的解釋是“非關系型的”,強調Key-Value Stores和文檔數據庫的優點,而不是單純的反對RDBMS
以是常用的NoSQL數據庫開源軟件,更多請看:http://www.baiduhome.net/lib/list/307
Membase
Membase 是 NoSQL 家族的一個新的重量級的成員。Membase是開源項目,源代碼采用了Apache2.0的使用許可。該項目托管在GitHub.Source tarballs上,目前可以 下載beta版本的Linux二進制包。該產品主要是由North Scale的memcached核心團隊成員開發完成,其中還包括Zynga和NHN這兩個主要貢獻者的工程師,這兩個組織都是很大的在線游戲和社區網絡空間的供應商。
Membase容易安裝、操作,可以從單節點方便的擴展到集群,而且為memcached(有線協議的兼容性)實現了即插即用功能,在應用方面為開 發者和經營者提供了一個比較低的門檻。做為緩存解決方案,Memcached已經在不同類型的領域(特別是大容量的Web應用)有了廣泛的使用,其中 Memcached的部分基礎代碼被直接應用到了Membase服務器的前端。
通過兼容多種編程語言和框架,Membase具備了很好的復用性。在安裝和配置方面,Membase提供了有效的圖形化界面和編程接口,包括可配置 的告警信息。
Membase的目標是提供對外的線性擴展能力,包括為了增加集群容量,可以針對統一的節點進行復制。 另外,對存儲的數據進行再分配仍然是必要的。
這方面的一個有趣的特性是NoSQL解決方案所承諾的可預測的性能,類準確性的延遲和吞吐量。通過如下方式可以獲得上面提到的特性:
◆ 自動將在線數據遷移到低延遲的存儲介質的技術(內存,固態硬盤,磁盤)
◆ 可選的寫操作一一異步,同步(基于復制,持久化)
◆ 反向通道再平衡[未來考慮支持]
◆ 多線程低鎖爭用
◆ 盡可能使用異步處理
◆ 自動實現重復數據刪除
◆ 動態再平衡現有集群
◆ 通過把數據復制到多個集群單元和支持快速失敗轉移來提供系統的高可用性。
MongoDB
MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似json的bjson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。它的特點是高性能、易部署、易使用,存儲數據非常方便。
主要功能特性:
◆ 面向集合存儲,易存儲對象類型的數據
“面向集合”(Collenction-Orented),意思是數據被分組存儲在數據集中,被稱為一個集合(Collenction)。每個 集合在數據庫中都有一個唯一的標識名,并且可以包含無限數目的文檔。集合的概念類似關系型數據庫(RDBMS)里的表(table),不同的是它不需要定 義任何模式(schema)。
◆ 模式自由
模式自由(schema-free),意味著對于存儲在mongodb數據庫中的文件,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的文件存儲在同一個數據庫里。
◆支持動態查詢
◆支持完全索引,包含內部對象
◆支持查詢
◆支持復制和故障恢復
◆使用高效的二進制數據存儲,包括大型對象(如視頻等)
◆自動處理碎片,以支持云計算層次的擴展性
◆支持RUBY,PYTHON,JAVA,C++,PHP等多種語言
◆文件存儲格式為BSON(一種JSON的擴展)
BSON(Binary Serialized dOcument Format)存儲形式是指:存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用于唯一標識一個文檔,為字符串類型,而值則可以是各中復雜的文件類型。
◆可通過網絡訪問
MongoDB服務端可運行在Linux、Windows或OS X平臺,支持32位和64位應用,默認端口為27017。推薦運行在64位平臺,因為MongoDB在32位模式運行時支持的最大文件尺寸為2GB。
MongoDB把數據存儲在文件中(默認路徑為:/data/db),為提高效率使用內存映射文件進行管理。
Hypertable
Hypertable是一個開源、高性能、可伸縮的數據庫,它采用與Google的Bigtable相似的模型。在過去數年中,Google為在PC集群 上運行的可伸縮計算基礎設施設計建造了三個關鍵部分。第一個關鍵的基礎設施是Google File System(GFS),這是一個高可用的文件系統,提供了一個全局的命名空間。它通過跨機器(和跨機架)的文件數據復制來達到高可用性,并因此免受傳統 文件存儲系統無法避免的許多失敗的影響,比如電源、內存和網絡端口等失敗。第二個基礎設施是名為Map-Reduce的計算框架,它與GFS緊密協作,幫 助處理收集到的海量數據。第三個基礎設施是Bigtable,它是傳統數據庫的替代。Bigtable讓你可以通過一些主鍵來組織海量數據,并實現高效的 查詢。Hypertable是Bigtable的一個開源實現,并且根據我們的想法進行了一些改進。
Apache Cassandra
Apache Cassandra是一套開源分布式Key-Value存儲系統。它最初由Facebook開發,用于儲存特別大的數據。Facebook目前在使用此系統。
主要特性:
◆ 分布式
◆ 基于column的結構化
◆ 高伸展性
Cassandra的主要特點就是它不是一個數據庫,而是由一堆數據庫節點共同構成的一個分布式網絡服務,對Cassandra 的一個寫操作,會被復制到其他節點上去,對Cassandra的讀操作,也會被路由到某個節點上面去讀取。對于一個Cassandra群集來說,擴展性能 是比較簡單的事情,只管在群集里面添加節點就可以了。
Cassandra是一個混合型的非關系的數據庫,類似于Google的BigTable。其主要功能比 Dynomite(分布式的Key-Value存 儲系統)更豐富,但支持度卻不如文檔存儲MongoDB(介于關系數據庫和非關系數據庫之間的開源產品,是非關系數據庫當中功能最豐富,最像關系數據庫 的。支持的數據結構非常松散,是類似json的bjson格式,因此可以存儲比較復雜的數據類型。)Cassandra最初由Facebook開發,后轉變成了開源項目。它是一個網絡社交云計算方面理想的數據庫。以Amazon專有的完全分布式的Dynamo為基礎,結合了Google BigTable基于列族(Column Family)的數據模型。P2P去中心化的存儲。很多方面都可以稱之為Dynamo 2.0。
和其他數據庫比較,其突出特點是:
◆ 模式靈活 :使用Cassandra,像文檔存儲,你不必提前解決記錄中的字段。你可以在系統運行時隨意的添加或移除字段。這是一個驚人的效率提升,特別是在大型部 署上。
◆ 真正的可擴展性 :Cassandra是純粹意義上的水平擴展。為給集群添加更多容量,可以指向另一臺電腦。你不必重啟任何進程,改變應用查詢,或手動遷移任何數據。
◆ 多數據中心識別 :你可以調整你的節點布局來避免某一個數據中心起火,一個備用的數據中心將至少有每條記錄的完全復制。
◆ 范圍查詢 :如果你不喜歡全部的鍵值查詢,則可以設置鍵的范圍來查詢。
◆ 列表數據結構 :在混合模式可以將超級列添加到5維。對于每個用戶的索引,這是非常方便的。
◆ 分布式寫操作 :有可以在任何地方任何時間集中讀或寫任何數據。并且不會有任何單點失敗。